home *** CD-ROM | disk | FTP | other *** search
/ Aminet 32 / Aminet 32 (1999)(Schatztruhe)[!][Aug 1999].iso / Aminet / comm / tcp / Socks5.lha / Socks5 / src / include / defs.h < prev    next >
C/C++ Source or Header  |  1999-03-10  |  5KB  |  233 lines

  1. /* Copyright (c) 1995-1999 NEC USA, Inc.  All rights reserved.               */
  2. /*                                                                           */
  3. /* The redistribution, use and modification in source or binary forms of     */
  4. /* this software is subject to the conditions set forth in the copyright     */
  5. /* document ("Copyright") included with this distribution.                   */
  6.  
  7. /*
  8.  * $Id: defs.h,v 1.25.4.5 1999/02/03 22:34:49 steve Exp $
  9.  */
  10.  
  11. #ifndef DEFS_H
  12. #define DEFS_H
  13.  
  14. #define SOCKS5_VERSION_NAME "Socks5 v1.0r9 "
  15.  
  16. #ifndef P
  17. #if defined(__STDC__) || defined(HAVE_FUNC_PROTOTYPE)
  18. #define P(x) x
  19. #else
  20. #define P(X) ()
  21. #endif
  22. #endif
  23.  
  24. #if defined(__SVR4) && !defined(__svr4__)
  25. #define __svr4__
  26. #endif
  27.  
  28. #if defined(sun) && defined(__svr4__)
  29. #define CONST
  30. #else
  31. #define CONST const
  32. #endif
  33.  
  34. #ifndef MIN
  35. #define MIN(a, b) (((a) < (b))?(a):(b))
  36. #endif
  37.  
  38. #ifndef MAX
  39. #define MAX(a, b) (((a) > (b))?(a):(b))
  40. #endif
  41.  
  42. #if F_SETOWN
  43. #define recv_sigio(x) fcntl((x), F_SETOWN, getpid())
  44. #elif defined FIOSETOWN
  45. #define recv_sigio(x) do { int pid = getpid(); ioctl((x), FIOSETOWN, &pid);   } while (0)
  46. #elif defined FIOSSAIOOWN
  47. #define recv_sigio(x) do { int pid = getpid(); ioctl((x), FIOSSAIOOWN, &pid); } while (0)
  48. #else 
  49. #define recv_sigio(x) /* What should your OS do...??? */
  50. #endif
  51.  
  52. #ifndef HAVE_STRERROR
  53. #ifdef  HAVE_SYSERRLIST
  54. extern int   sys_nerr;
  55. extern char *sys_errlist[];
  56. #define strerror(x) (((int)(x) < sys_nerr)?sys_errlist[(x)]:"Unknown error")
  57. #else
  58. #define strerror(x) "Inaccessible error string"
  59. #define HAVE_STRERROR
  60. #endif
  61. #endif
  62.  
  63. #ifndef HAVE_STRDUP
  64. static inline char *strdup(const char *s1) {
  65.     char *s2 = malloc(strlen(s1)+1);
  66.     if (s2) strcpy(s2,s1);
  67.     return s2;
  68. }
  69. #define HAVE_STRDUP
  70. #endif
  71.  
  72. #ifndef STDIN_FILENO
  73. #define STDIN_FILENO 0
  74. #endif
  75.  
  76. #ifndef STDOUT_FILENO
  77. #define STDOUT_FILENO 1
  78. #endif
  79.  
  80. #ifndef STDERR_FILENO
  81. #define STDERR_FILENO 2
  82. #endif
  83.  
  84. #ifndef S_ISLNK
  85. #define S_ISLNK(m) (((m)&(S_IFMT)) == (S_IFLNK))
  86. #endif
  87.  
  88. #ifndef IORETTYPE 
  89. #define IORETTYPE int
  90. #endif
  91.  
  92. #ifndef IOPTRTYPE 
  93. #define IOPTRTYPE void *
  94. #endif
  95.  
  96. #ifndef IOLENTYPE 
  97. #define IOLENTYPE size_t
  98. #endif
  99.  
  100. #define ADDRCOMP(a, b) ((a)->sin_port == (b)->sin_port && (a)->sin_addr.s_addr == (b)->sin_addr.s_addr)
  101.  
  102. #ifndef MAXNAMELEN
  103. #define MAXNAMELEN 256
  104. #endif
  105.  
  106. #ifndef MAXHOSTNAMELEN
  107. #define MAXHOSTNAMELEN 256
  108. #endif
  109.  
  110. #ifndef GENERICBUFSIZE
  111. #define GENERICBUFSIZE 4096      /* How big should the flow buffer be???     */
  112. #endif
  113.  
  114. #ifndef HAVE_IPPORT_RESERVED
  115. #define HAVE_IPPORT_RESERVED
  116. #define IPPORT_RESERVED 1024
  117. #endif
  118.  
  119. #ifndef INADDR_ANY
  120. #define INADDR_ANY 0x00000000
  121. #endif
  122.  
  123. #ifndef INADDR_LOOPBACK
  124. #define INADDR_LOOPBACK 0x7f000001
  125. #endif
  126.  
  127. #define SOCKS_DEF_PORT    1080 /* tcp   */
  128.  
  129. #define INVALIDPORT (u_short)-1    /* A macro for realizing an invalid port...   */
  130. #define INVALIDADDR (u_int)-1    /* A macro for realizing an invalid address.  */
  131.  
  132. /* authentication types */
  133. #define AUTH_NONE      0x00
  134. #define AUTH_GSSAPI    0x01
  135. #define AUTH_PASSWD    0x02
  136.  
  137. /* error types */
  138. #define AUTH_OK        0
  139. #define AUTH_FAIL      -1
  140.  
  141. /* version */
  142. #define DIRECT          0
  143. #define SOCKS4_VERSION    4
  144. #define SOCKS5_VERSION    5
  145.  
  146. /* command */
  147. #define SOCKS_CONNECT    1
  148. #define SOCKS_BIND    2
  149. #define SOCKS_UDP       3
  150. #define SOCKS_PING      0x80
  151. #define SOCKS_TRACER    0x81
  152. #define SOCKS_ANY       0xff
  153.  
  154. /* UDP sub-command */
  155. #define S5UDP_USECLIENTPORT    0xc1
  156. #define S5UDP_BIND        0xc2
  157. #define S5UDP_GETSOCKNAME    0xc3
  158.  
  159. /* reserved */
  160. #define S5UDP_USECTRL    0x04
  161.  
  162. /* socks 4 errors */
  163. #define SOCKS_NOERR     0
  164. #define SOCKS_RESULT    90
  165. #define SOCKS_FAIL    91
  166. #define SOCKS_NO_IDENTD    92
  167. #define SOCKS_BAD_ID    93
  168.  
  169. /* socks 5 errors */
  170. #define SOCKS5_NOERR       0x00
  171. #define SOCKS5_RESULT       0x00
  172. #define SOCKS5_FAIL       0x01
  173. #define SOCKS5_AUTHORIZE   0x02
  174. #define SOCKS5_NETUNREACH  0x03
  175. #define SOCKS5_HOSTUNREACH 0x04
  176. #define SOCKS5_CONNREF     0x05
  177. #define SOCKS5_TTLEXP      0x06
  178. #define SOCKS5_BADCMND     0x07
  179. #define SOCKS5_BADADDR     0x08
  180.  
  181. /* flags */
  182. #define SOCKS5_FLAG_NONAME  0x01
  183. #define SOCKS5_FLAG_VERBOSE 0x02
  184. #define SOCKS5_IPV4ADDR 0x01 
  185. #define SOCKS5_HOSTNAME 0x03
  186. #define SOCKS5_IPV6ADDR 0x04
  187.  
  188. /* socks5 offsets */
  189. #define RP_VERSION 0
  190. #define RP_COMMAND 1
  191. #define RP_REPLY   1
  192. #define RP_AUTH    1
  193. #define RP_RESERVE 2
  194. #define RP_FLAGS   3
  195. #define RP_HOSTOFF 4
  196.  
  197. /* socks4 offsets */
  198. #define SP_VERSION 0
  199. #define SP_COMMAND 1
  200. #define SP_PORTOFF 2
  201. #define SP_HOSTOFF 4
  202. #define SP_USEROFF 8
  203.  
  204. #define MINHDRSIZE   10
  205. #define IPV4HDRSIZE  10
  206. #define IPV6HDRSIZE  22
  207. #define MAXHDRSIZE   262
  208. #define NAMEHDRSIZE(x) (7 + strlen((x)))
  209.  
  210. #define UDP_MAX_PAYLOAD ((2<<16) - 18 - 8) /* 8 = sizeof(struct udp), 18  = sizeof(struct ip) */
  211.  
  212. #ifdef HAVE_NETINET6_IN6_H
  213. #define HOSTLEN(x)  (((x)[RP_FLAGS] == SOCKS5_HOSTNAME)?((x)[RP_HOSTOFF]+1): \
  214.             (((x)[RP_FLAGS] == SOCKS5_IPV4ADDR)?sizeof(struct in_addr):sizeof(struct in_addr6)))
  215. #else
  216. #define HOSTLEN(x)  (((x)[RP_FLAGS] == SOCKS5_HOSTNAME)?((x)[RP_HOSTOFF]+1):sizeof(struct in_addr))
  217. #endif
  218. #define HDRSIZE(x)  (RP_HOSTOFF + HOSTLEN((x)) + sizeof(u_short))
  219.  
  220. #ifdef HAVE_SHL_LOAD
  221. #define S5LibHandle shl_t
  222. #else
  223. #define S5LibHandle void *
  224. #endif
  225.  
  226. #ifdef __FreeBSD__
  227. #define UNDERSCORE "_"
  228. #else
  229. #define UNDERSCORE
  230. #endif
  231.  
  232. #endif
  233.